Vastly improve configuration error messages
This commit seeks to improve error messages with respect to a misconfigured
Cargo. This is done with a few principles and architectural changes:
* All error messages related to configuration should now mention the file in
question.
* All error messages should print the key in question which was in error.
* Loading configuration values is now centralized in the `Config` structure,
providing precisely one location where error message originate from. The
messages were previously strewn and duplicated about.
* The `Config` structure now provides typed `get_foo` methods to load various
configuration keys of various types.